﻿using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;

namespace AbstraX.Contracts
{
    public interface IPipelineTemplateEngineHost
    {
        event EventHandler DebugCallback;
        void GenerateFile(IElementBuild build, FileInfo fileInfo, string _namespace, Dictionary<string, object> extraValues = null);
        void GenerateFile(FileInfo fileInfo, string _namespace, Dictionary<string, object> values = null);
        void GenerateFile(FileInfo fileInfo, string _namespace, IEnumerable list = null);
        void GenerateFile<TGeneratorType>(IElementBuild build, FileInfo fileInfo, string _namespace, Dictionary<string, object> extraValues = null);
        void GenerateFile<TGeneratorType>(FileInfo fileInfo, string _namespace, Dictionary<string, object> values = null);
        void GenerateFile<TGeneratorType>(FileInfo fileInfo, string _namespace, IEnumerable list = null);
        event OnGeneratorFileWithBuildPostBuildHandler OnGeneratorFileWithBuildPostBuild;
        event OnGeneratorFileWithBuildPreBuildHandler OnGeneratorFileWithBuildPreBuild;
        event OnGeneratorFileWithListPostBuildHandler OnGeneratorFileWithListPostBuild;
        event OnGeneratorFileWithListPreBuildHandler OnGeneratorFileWithListPreBuild;
    }
}
